home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / fly.src < prev    next >
Text File  |  1991-10-19  |  29KB  |  851 lines

  1. %%HP: T(3)A(R)F(.);
  2. @ FLY, a flight plan computer, by Eric R. Anderson
  3. DIR
  4.   SETUP
  5.     \<<
  6.       IF 'ASC\->' VTYPE -1 ==
  7.       THEN
  8.         "ASC\-> must be in this\010 or higher directory"
  9.         DOERR
  10.       END
  11.       CURSOR ASC\-> 'CURSOR' STO
  12.       PGROB ASC\-> 'PGROB' STO
  13.       UPGROB ASC\-> 'UPGROB' STO
  14.       FPLAN.GROB ASC\-> 'FPLAN.GROB' STO
  15.       HELP.3 ASC\-> 'HELP.3' STO
  16.       HELP.2 ASC\-> 'HELP.2' STO
  17.       HELP.1 ASC\-> 'HELP.1' STO
  18.       STMENU ASC\-> 'STMENU' STO
  19.       WBMENU ASC\-> 'WBMENU' STO
  20.       MEM DROP
  21.       PLANES ASC\-> 'PLANES' STO
  22.       'SETUP' PURGE
  23.     \>>
  24.   START.
  25.     \<< RCLF DEPTH 'STRT.DPTH' STO
  26.         IFERR
  27.           1
  28.           DO
  29.             STMENU CHOOSE
  30.             {
  31.           \<<
  32.             IF 'W&B' TRAP
  33.             THEN
  34.               DUP2 CLLCD "        Weight" 1 DISP
  35.               SWAP DTAG \->STR DUP "_" POS " " REPL "'" STRIP PAD 3 DISP
  36.               "      Moment Arm" 5 DISP
  37.               DTAG \->STR DUP "_" POS " " REPL "'" STRIP PAD 7 DISP
  38.               { } TMENU TEXT PAUSE
  39.             END
  40.             1 0
  41.           \>>
  42.           \<< 'FPLAN' TRAP DROP 2 0 \>>
  43.           \<<
  44.             IF 'WIND' TRAP
  45.             THEN
  46.               DUP2 CLLCD "   Winds Aloft From" 1 DISP
  47.               SWAP DTAG \->STR PAD 3 DISP
  48.               "          At" 5 DISP DTAG
  49.               IF DUP TYPE 13 ==
  50.               THEN \->STR "'" STRIP DUP "_" POS " " REPL
  51.               ELSE \->STR
  52.               END
  53.               PAD 7 DISP
  54.               { } TMENU PAUSE
  55.             END
  56.             3 0
  57.           \>>
  58.           \<<
  59.             IF 'DALT' TRAP
  60.             THEN
  61.               CLLCD DUP "   Density Altitude:" 4 DISP
  62.               DTAG \->STR DUP "_" POS " " REPL "'" STRIP PAD 6 DISP
  63.               { } TMENU PAUSE
  64.             END
  65.             4 0
  66.           \>>
  67.           \<<
  68.             IF 'DISTANCE' TRAP
  69.             THEN
  70.               CLLCD DUP2 "     True Heading" 5 DISP
  71.               DTAG \->STR PAD 7 DISP
  72.               "       Distance" 1 DISP
  73.               DTAG \->STR DUP "_" POS " " REPL "'" STRIP PAD 3 DISP
  74.               { } TMENU PAUSE
  75.             END
  76.             5 0
  77.           \>>
  78.           \<<
  79.             IF 'CWIND' TRAP
  80.             THEN
  81.               DUP2 CLLCD
  82.               DUP \->STR 1 " " REPL DUP ":" POS 1 - 1 SWAP SUB PAD 5 DISP
  83.               DTAG \->STR PAD 7 DISP
  84.               DUP \->STR 1 " " REPL DUP ":" POS 1 - 1 SWAP SUB " Crosswind" +
  85.               PAD 1 DISP
  86.               DTAG \->STR PAD 3 DISP
  87.               { } TMENU PAUSE
  88.             END
  89.             6 0
  90.           \>>
  91.           { 7 0 }
  92.           { 8 0 }
  93.           \<< HELP 9 0 \>>
  94.           { 1 }
  95.             }
  96.             SWAP GET EVAL
  97.           UNTIL
  98.           END
  99.         THEN
  100.         END
  101.         2 MENU CLLCD
  102.         DEPTH STRT.DPTH - DROPN
  103.         STOF 'STRT.DPTH' PURGE
  104.     \>>
  105.   HELP
  106.     \<<
  107.       IFERR
  108.         PICT { # 0d # 0d } HELP.1 UPGROB REPL
  109.         { # 0d # 0d } PVIEW
  110.         0 WAIT DROP
  111.         PICT { # 0d # 0d } HELP.2 UPGROB REPL
  112.         0 WAIT DROP
  113.         PICT { # 0d # 0d } HELP.3 UPGROB REPL
  114.         0 WAIT DROP
  115.       THEN DROP
  116.       END
  117.     \>>
  118.   FPLAN
  119. \<<
  120.    RCLF -15 CF -16 SF DEG STD
  121.    PICT  { # 0d # 0d } FPLAN.GROB UPGROB REPL
  122.    ":Course: \010:Distance: " ":Variation: " ":TAS: "
  123.    ":WD: \010:WS: " ":FCR: "    1 0 0 0
  124.    \->
  125.    tcdef vardef tasdef winddef fcrdef speedunit totdist tottime totfuel
  126.   \<<
  127.     1
  128.     DO
  129.       "Enter number of legs,\010maximum 8" "" INPUT OBJ\->
  130.       IF DUP 9 < THEN 1 ELSE DROP 1400 .08 BEEP 0 END
  131.     UNTIL
  132.     END
  133.     FOR j
  134.      { { "mi" "_mi" } { "nmi" "_nmi" } "" "" "" { "km" "_km" } } TMENU
  135.      "Leg X: Enter TRUE\010course and distance" 5 j \->STR REPL
  136.      tcdef -10 2 \->LIST INPUT
  137.      DUP 'tcdef' STO OBJ\-> DTAG SWAP DTAG SWAP
  138.      { { "W" "_W" } "" "" "" "" { "E" "_E" } } TMENU
  139.      "Leg X: Enter Variation\010(- or W , + or E)" 5 j \->STR REPL
  140.      vardef -13 2 \->LIST INPUT
  141.      DUP 'vardef' STO OBJ\-> DTAG
  142.      { { "mph" "_mph" } { "knot" "_knot" } "" "" "" { "kph" "_kph" } } TMENU
  143.      "Leg X: Enter True\010Airspeed" 5 j \->STR REPL
  144.      tasdef -7 2 \->LIST INPUT
  145.      DUP 'tasdef' STO OBJ\-> DTAG
  146.      IF DUP TYPE 13 == THEN DUP 'speedunit' STO UVAL END
  147.      "Leg X: Enter Wind\010Direction and Speed" 5 j \->STR REPL
  148.      winddef -6 2 \->LIST INPUT
  149.      DUP 'winddef' STO OBJ\-> DTAG
  150.      IF DUP TYPE 13 ==
  151.      THEN
  152.        IF speedunit TYPE 13 ==
  153.        THEN speedunit CONVERT UVAL
  154.        ELSE DUP 'speedunit' STO UVAL
  155.        END
  156.      END
  157.      SWAP 180 + \->V2
  158.      { { "gph" "_Gal/h" } { "lb/h" "_lb/h" } ""
  159.        "" { "L/h" "_L/h" } { "kg/h" "_kg/h" } } TMENU
  160.      "Leg X: Enter rate of\010fuel consumption" 5 j \->STR REPL
  161.      fcrdef -7 2 \->LIST INPUT
  162.      DUP 'fcrdef' STO OBJ\->
  163.      6 ROLLD DUP 6 PICK 90 + 1 SWAP \->V2 DOT NEG 3 PICK / ASIN 6 PICK +
  164.      DUP 4 ROLL SWAP \->V2 ROT +
  165.      1 6 PICK \->V2 DOT
  166.      IF speedunit TYPE 13 == THEN speedunit \->UNIT END
  167.      SWAP ROT
  168.      IF DUP TYPE 13 ==
  169.      THEN
  170.        IF DUP \->STR "W" POS THEN NEG END UVAL
  171.      END
  172.      - 0 RND
  173.      SWAP DUP 4 PICK SWAP /
  174.      IFERR '1_h' CONVERT THEN DROP UVAL '1_h' \->UNIT END
  175.      DUP 7 ROLL * UVAL DUP 'totfuel' STO+
  176.      IF DUP 99 > THEN 0 RND \->STR ELSE 1 FIX \->STR STD END
  177.      IF DUP SIZE 4 < THEN " " SWAP + END
  178.      SWAP UVAL DUP 'tottime' STO+
  179.      \->HMS 2 FIX \->STR 2 ":" REPL STD
  180.      ROT 0 RND DUP \->STR SWAP
  181.      IF TYPE 13 == THEN "'" STRIP DUP "_" POS " " REPL END
  182.      WHILE DUP SIZE 8 < REPEAT " " SWAP + END
  183.      5 ROLL DUP 'totdist' STO+
  184.      UVAL
  185.      1 6 FOR k
  186.        PICT
  187.        { # 46d # 60d # 97d # 114d # 30d # 16d } k GET
  188.        9 j 1 - 6 * + R\->B
  189.        2 \->LIST
  190.        ROT \->STR
  191.        IF DUP SIZE 3 < THEN " " SWAP + END
  192.        1 \->GROB REPL
  193.      NEXT
  194.     NEXT
  195.     PICT { # 42d # 59d }
  196.     totdist UVAL 0 RND \->STR
  197.     WHILE DUP SIZE 4 < REPEAT " " SWAP + END
  198.     1 \->GROB REPL
  199.     PICT { # 97d # 59d }
  200.     tottime 2 FIX \->HMS \->STR STD
  201.     2 ":" REPL 1 \->GROB REPL
  202.     PICT { # 114d # 59d }
  203.     totfuel
  204.     IF DUP 99 > THEN 0 RND ELSE 1 FIX END
  205.     \->STR
  206.     IF DUP SIZE 4 < THEN " " SWAP + END
  207.     1 \->GROB REPL
  208.     { # 0d # 0d } PVIEW
  209.     IFERR 0 WAIT THEN END DROP
  210.   \>>
  211.   STOF 2 MENU
  212. \>>
  213.   W&B
  214.     \<<
  215.       RCLF
  216.       IF 'PLANES' VTYPE -1 SAME THEN ADDPLANE END
  217.       DO
  218.         DO
  219.           1 WBMENU CHOOSE
  220.           PLANES SWAP GET LIST\-> 1 - SWAP DROP
  221.         UNTIL
  222.         END
  223.         DUP TYPE 5 SAME
  224.         1
  225.         \<< EVAL 0 \>>
  226.         IFTE
  227.       UNTIL
  228.       END
  229.       UNITMENU TMENU
  230.       LIST\-> \-> num
  231.       \<<
  232.         0 0
  233.         1 num FOR j
  234.           num j - 3 + ROLL WBIN
  235.           { '1_in' '1_cm' } 10 FS? 1 + GET CONVERT UVAL SWAP
  236.           { '1_lb' '1_kg' } 10 FS? 1 + GET CONVERT UVAL
  237.           DUP ROT * ROT + ROT ROT + SWAP
  238.         NEXT
  239.         { '1_in*lb' '1_cm*kg' } 10 FS? 1 + GET \->UNIT
  240.         1 RND "Moment" \->TAG SWAP
  241.         { '1_lb' '1_kg' } 10 FS? 1 + GET \->UNIT
  242.         0 RND "Weight" \->TAG SWAP
  243.       \>>
  244.       2 MENU 3 ROLL
  245.       IF DUP SIZE THEN CGGRAPH ELSE DROP END
  246.       ROT STOF
  247.     \>>
  248.   WIND
  249.     \<<
  250.       RCLF -15 CF -16 SF
  251.       { { "MPH" "_mph" } { "KNOT" "_knot" } "" "" "" { "KPH" "_kph" } } TMENU
  252.       "Enter True Course:" "" INPUT OBJ\->
  253.       "Enter Ground Speed" "" INPUT OBJ\->
  254.       DUP UVAL ROT \->V2
  255.       "Enter True Heading" "" INPUT OBJ\->
  256.       "Enter True Airspeed" "" INPUT OBJ\->
  257.       IF DUP TYPE 13 ==
  258.       THEN
  259.         4 ROLL
  260.         IF DUP TYPE 13 == THEN CONVERT ELSE DROP END
  261.         DUP UVAL ROT
  262.       ELSE 4 ROLL SWAP ROT
  263.       END
  264.       \->V2
  265.       SWAP 3 ROLLD - NEG V\->
  266.       IF DUP 0 < THEN 360 + END
  267.       0 RND "Winds From" \->TAG
  268.       SWAP 0 RND ROT
  269.       IFERR \->UNIT THEN DROP END
  270.       "Wind Speed" \->TAG
  271.       ROT STOF 2 MENU
  272.     \>>
  273.   DALT
  274.     \<<
  275.       RCLF
  276.       { { "ft" "_ft" } { "m" "_m" } "" ""
  277.         { "\^oF" "_\^oF" } { "\^oC" "_\^oC" } } TMENU
  278.       DO
  279.         "Enter:"
  280.         ":Air Temp.: _\^oF\010:Press. Alt.: _ft"
  281.         IF 10 FS? THEN 15 "C" REPL 32 "m " REPL END
  282.         { 1 13 } 2 \->LIST INPUT
  283.       UNTIL
  284.         IF DUP " _" POS
  285.         THEN 1400 .08 BEEP DROP 0
  286.         ELSE
  287.           OBJ\->
  288.           IF DUP '11_km' >
  289.           THEN
  290.             1400 .08 BEEP "Alt. < "
  291.             { "36000 ft" "11000 m" } 10 FS? 1 + GET + " only.\010 "  +
  292.             1 DISP 1 WAIT DROP2 0
  293.           ELSE 1
  294.           END
  295.         END
  296.       END
  297.       '1_ft' CONVERT UVAL .0019812 * NEG 288.15 + 5.255876 ^
  298.       SWAP
  299.       '1_K' CONVERT UVAL / 4.255876 INV ^ NEG 288.15 + .0019812 /
  300.       '1_ft' \->UNIT
  301.       IF 10 FS? THEN '1_m' CONVERT END
  302.       0 RND "Den. Alt" \->TAG
  303.       2 MENU SWAP STOF
  304.     \>>
  305.   DISTANCE
  306.     \<<
  307.       RCLF DEG { } TMENU
  308.       1 2 FOR j
  309.         DO
  310.           { "Enter Lat. (N) and\010Long. (W) of origin"
  311.             "Enter Lat. and Long.\010of destination" }
  312.           j GET { ":Lat: \010:Long: " 7 } INPUT
  313.         UNTIL
  314.           IF DUP DUP SIZE SWAP 10 CHR POS - 7 >
  315.           THEN 1
  316.           ELSE DROP 1400 .08 BEEP 0
  317.           END
  318.         END
  319.         OBJ\->
  320.       NEXT
  321.       1 4 START
  322.         4 ROLL HMS\->
  323.       NEXT
  324.       \-> lat1 long1 lat2 long2
  325.       \<<
  326.         lat1 SIN lat2 SIN * lat1 COS lat2 COS * long1 long2 - COS * + ACOS 60
  327. *
  328.         DUP 60 / SIN INV long1 long2 - SIN * lat2 COS * ASIN
  329.         IF lat2 lat1 <
  330.         THEN 180 SWAP -
  331.         ELSE IF DUP 0 < THEN 360 + END
  332.         END
  333.       \>>
  334.       SWAP
  335.       '1_nmi' \->UNIT
  336.       IF 10 FS? THEN '1_km' CONVERT END
  337.       0 RND "Distance" \->TAG
  338.       SWAP 0 RND "True Heading" \->TAG
  339.       ROT STOF 2 MENU
  340.     \>>
  341.   CWIND
  342.     \<<
  343.       RCLF -15 CF -16 SF DEG { } TMENU
  344.       "DUMMY"
  345.       DO DROP "Enter runway heading" "" INPUT
  346.       UNTIL DUP SIZE
  347.       END
  348.       OBJ\->
  349.       "DUMMY"
  350.       DO
  351.         DROP
  352.         "Enter wind direction\010and speed"
  353.         { ":WD: \010:WS: " 6 } INPUT
  354.       UNTIL DUP DUP SIZE SWAP 10 CHR POS - 5 >
  355.       END
  356.       OBJ\-> DTAG UVAL
  357.       SWAP DTAG 180 + \->V2
  358.       SWAP DUP 90 + 1 SWAP \->V2
  359.       3 PICK DOT 0 RND
  360.       IF DUP 0 < THEN NEG "Right" ELSE "Left" END
  361.       \->TAG
  362.       3 ROLLD 1 SWAP \->V2 DOT 0 RND
  363.       IF DUP 0 < THEN NEG "Headwind" ELSE "Tailwind" END
  364.       \->TAG ROT STOF 2 MENU
  365.     \>>
  366.   PAUSE
  367.     \<< IFERR -1 WAIT THEN END DROP \>>
  368.   TRAP
  369.     \<<
  370.       DEPTH 1 - 'S.DEPTH' STO
  371.       IFERR EVAL
  372.       THEN
  373.         DEPTH 1 - S.DEPTH - DROPN
  374.         STOF
  375.         IF ERRN # 0d \=/
  376.         THEN
  377.           1400 .08 BEEP
  378.           "Error:\010" ERRM + CLLCD 1 DISP 2 WAIT
  379.         END
  380.         0
  381.       ELSE 1
  382.       END
  383.       'S.DEPTH' PURGE
  384.     \>>
  385.   MAKEMENU
  386.     \<<
  387.       ERASE
  388.       PICT { # 0d # 8d } { # 130d # 8d } LINE
  389.       { # 2d # 0d }
  390.       "Enter Title,\01021 char max" { \Ga } INPUT 2 \->GROB
  391.       REPL
  392.       1 10 FOR j
  393.         PICT
  394.         IF j 5 >
  395.         THEN # 70d # 10d j 5 - * # 1d +
  396.         ELSE # 2d # 10d j * # 1d +
  397.         END
  398.         2 \->LIST
  399.         DO
  400.           "Enter Item " j \->STR + "\010(10 letter max.)" +
  401.           { \Ga } INPUT
  402.         UNTIL
  403.           IF DUP SIZE 11 < THEN 1 ELSE DROP 0 1400 .08 BEEP END
  404.         END
  405.       2 \->GROB REPL
  406.       NEXT
  407.       PICT RCL { # 0d # 0d } PVIEW
  408.       IFERR 0 WAIT THEN END DROP
  409.     \>>
  410.   ADDPLANE
  411.     \<<
  412.       DO "Add or Delete? (A/D)" { "" \Ga } INPUT
  413.       UNTIL DUP "AaDd" SWAP POS
  414.       END
  415.       \-> choice
  416.       \<<
  417.         IF 'PLANES' VTYPE -1 >
  418.         THEN PLANES
  419.         ELSE
  420.           { "" } DUP DUP2 DUP2 DUP2 DUP { { } ADDPLANE "Add/Delete" }
  421.           10 \->LIST
  422.         END
  423.         CASE
  424.           "Aa" choice POS
  425.         THEN
  426.           DUP EVAL
  427.           11 ROLL
  428.           1 \-> n
  429.           \<<
  430.             DO
  431.               12 n - ROLL LIST\->
  432.               IF 1 SAME THEN DROP 1 ELSE 3 DROPN 'n' INCR DROP 0 END
  433.               IF n 10 SAME THEN DROP2 "All slots are full" DOERR END
  434.             UNTIL
  435.             END
  436.             n
  437.             ADDGRAPH
  438.             "Enter # of stations" "" INPUT OBJ\->
  439.             \-> l
  440.             \<<
  441.               1 l FOR j
  442.                 "Enter station " j \->STR + "\010" +
  443.                 \-> sta
  444.                 \<<
  445.                   DESCMENU TMENU
  446.                   sta "Description" + "" INPUT
  447.                   UNITMENU TMENU
  448.                   sta "Default Weight" + "" INPUT
  449.                   sta "Default Moment Arm" + "" INPUT
  450.                 \>>
  451.                 3 \->LIST
  452.               NEXT
  453.               l \->LIST
  454.               PLMENU TMENU
  455.               DO
  456.                 "Enter plane N-number/\010 type. (10 letters max)"
  457.                 "" INPUT
  458.                 DUP SIZE
  459.                 IF 10 \<= THEN 1 ELSE DROP 0 END
  460.               UNTIL
  461.               END
  462.               3 \->LIST
  463.               PUT
  464.             \>>
  465.             'PLANES' STO
  466.             10 n - DROPN
  467.           \>>
  468.         END
  469.         "Dd" choice POS
  470.         THEN
  471.           1
  472.           IF 'WBMENU' VTYPE -1 SAME
  473.           THEN # 131d # 64d BLANK
  474.           ELSE WBMENU UPGROB
  475.           END
  476.           { # 2d # 0d } "Delete which aircraft" 2 \->GROB REPL
  477.           { # 70d # 51d } "No change " 2 \->GROB REPL
  478.           IF CHOOSE DUP 10 \=/
  479.           THEN
  480.             SWAP EVAL
  481.             11 ROLL
  482.             NEG 11 + ROLL
  483.             DROP { "" } SWAP
  484.             10 \->LIST
  485.           ELSE DROP
  486.           END
  487.           'PLANES' STO
  488.         END
  489.         END
  490.         TEXT CLLCD "      Updating..." 3 DISP
  491.         PLANES EVAL
  492.         # 131d # 64d BLANK
  493.         70 2 FOR x
  494.           51 11 FOR y
  495.             SWAP
  496.             LIST\-> \-> m
  497.               \<< m ROLLD m 1 - DROPN \>>
  498.             2 \->GROB
  499.             x R\->B y R\->B 2 \->LIST
  500.             SWAP GOR
  501.           -10 STEP
  502.         -68 STEP
  503.         { # 2d # 0d } "Select Aircraft" 2 \->GROB GOR
  504.         PICT SWAP { # 0d # 0d } SWAP REPL
  505.         { # 0d # 8d } { # 130d # 8d } LINE
  506.         PICT RCL PGROB 'WBMENU' STO
  507.       \>>
  508.     \>>
  509.   STRIP
  510.     \<<
  511.       1 \-> delchr stop
  512.       \<<
  513.         WHILE DUP delchr POS 0 \=/
  514.         REPEAT
  515.           DUP delchr POS 1 - 'stop' STO
  516.           DUP 1 stop SUB
  517.           SWAP
  518.           DUP SIZE stop 2 + SWAP SUB +
  519.         END
  520.       \>>
  521.     \>>
  522.   PAD
  523.     \<< WHILE DUP SIZE 21 < REPEAT " " + " " SWAP + END \>>
  524.   CHOOSE
  525.     \<<
  526.       PICT { # 0d # 0d } ROT
  527.       IF DUP TYPE 10 == THEN UPGROB END
  528.       REPL
  529.       { #0d #0d } PVIEW
  530.       R\->B
  531.       DUP # 6d <
  532.       # 1d
  533.       # 69d
  534.       IFTE
  535.       SWAP 10 *
  536.       IF DUP # 50d > THEN # 50d - END
  537.       \-> x y
  538.       \<<
  539.         DO
  540.           PICT
  541.           x y 2 \->LIST
  542.           DUP 3 ROLLD CURSOR GXOR
  543.           DO
  544.             0 WAIT IP
  545.             { 34 36 25 35 51 } SWAP POS DUP
  546.             IF THEN DUP END
  547.           UNTIL
  548.           END
  549.           {
  550.           \<< x # 68d XOR 'x' STO 0 \>>
  551.           \<< x # 68d XOR 'x' STO 0 \>>
  552.           \<<
  553.             IF y # 10d == THEN # 50d 'y' STO ELSE 'y' # 10d STO- END 0
  554.           \>>
  555.           \<<
  556.             IF y # 50d == THEN # 10d 'y' STO ELSE 'y' # 10d STO+ END 0
  557.           \>>
  558.           1 }
  559.           SWAP GET EVAL SWAP
  560.           PICT SWAP CURSOR GXOR
  561.         UNTIL
  562.         END
  563.         y B\->R 10 / x B\->R 69 / IP 5 * +
  564.       \>>
  565.     \>>
  566.   ADDGRAPH
  567.     \<<
  568.       "Enter # of points in\010c.g. graph (0 for no\010graph):"
  569.       "" INPUT OBJ\->
  570.       \-> num
  571.       \<<
  572.         IF num 0 \<=
  573.         THEN { }
  574.         ELSE
  575.         0 1000 0 1000000
  576.         \-> mmax mmin wmax wmin
  577.         \<<
  578.           DO
  579.             ERASE
  580.             1 num FOR j
  581.               "Enter point " j \->STR + " in form\010{mom/1000 weight}" +
  582.               { "{ }" { 1 2 } } INPUT OBJ\->
  583.               DUP EVAL DUP DUP
  584.               IF wmax > THEN DUP 'wmax' STO END
  585.               IF wmin < THEN DUP 'wmin' STO END
  586.               DROP DUP DUP
  587.               IF mmax > THEN DUP 'mmax' STO END
  588.               IF mmin < THEN DUP 'mmin' STO END
  589.               DROP
  590.             NEXT
  591.             { # 0d # 0d } PVIEW
  592.             1 num 1 - START
  593.               SWAP DUP 3 ROLL
  594.               1 2 START
  595.                 SWAP EVAL wmax wmin 63 SCL # 63d SWAP -
  596.                 SWAP mmax mmin 130 SCL SWAP 2 \->LIST
  597.               NEXT
  598.               LINE
  599.             NEXT
  600.             DROP
  601.           UNTIL
  602.             0 WAIT DROP
  603.             { "YES" "" "" "" "" "NO" } TMENU
  604.             "Is the graph correct?" "" INPUT
  605.             "YES" ==
  606.             1
  607.             \<<
  608.                "Enter # of points"
  609.                "" INPUT OBJ\-> 'num'
  610.                STO 0
  611.             \>>
  612.             IFTE
  613.           END
  614.           PICT RCL PGROB mmax mmin wmax wmin 5 \->LIST
  615.           \>>
  616.         END
  617.       \>>
  618.     \>>
  619.   SCL
  620.     \<<
  621.       \-> valmax valmin factor
  622.       \<< valmin - valmax valmin - / factor * 0 RND R\->B \>>
  623.     \>>
  624.   WBIN
  625.     \<<
  626.       EVAL
  627.       \-> station defwgt defarm
  628.       \<<
  629.         DO
  630.           "Enter " station + "\010weight and moment arm:" +
  631.           ":Weight: " defwgt + "\010:Mom. arm: " + defarm +
  632.           { 1 10 } 2 \->LIST INPUT
  633.         UNTIL
  634.           IF DUP " _" POS THEN 1400 .08 BEEP DROP 0 ELSE 1 END
  635.         END
  636.         OBJ\->
  637.       \>>
  638.     \>>
  639.   CGGRAPH
  640.     \<<
  641.      IFERR
  642.       EVAL
  643.       \-> mmax mmin wmax wmin
  644.       \<<
  645.         UPGROB PICT STO
  646.         DUP2
  647.         { '1000_in*lb' '1000_cm*kg' } 10 FS? 1 + GET
  648.         / mmax mmin 130 SCL SWAP UVAL
  649.         IF DUP wmax \<=
  650.         THEN wmax wmin 63 SCL
  651.         ELSE DROP2 "Aircraft is overweight" DOERR
  652.         END
  653.         # 63d SWAP - 2 \->LIST
  654.         # 1d 0 360 ARC { # 0d # 0d } PVIEW
  655.       \>>
  656.       IFERR 0 WAIT THEN END DROP
  657.       CLLCD
  658.      THEN
  659.       CLLCD 1400 .08 BEEP ERRM 1 DISP 2 WAIT
  660.      END
  661.     \>>
  662.   PGROB
  663. "D9D20ECE8176040CCD20EB1008FB976014713506174147DAF4C2818F2E8FD7B5
  664. 081AF1813581AF0A80824E4A20141818F2913507818F24134142CAD816415271
  665. 517179818F2E13481AF0813713581AF0917115201510D31701601361348B9606
  666. 6601560155090661B67AEB808A73DA6F654031409EBB3136EB134137EB13581A
  667. F11E2808A7A9818FA27BA013313181AF01627F137135EB81AF11E2818FA28AA8
  668. 1CE7A70137135EBCE81AF0981AF1913596B01AEB8089714D1721361348B56066
  669. 1F81AF1A81AF0806133130EA34A10008A6501608F176618F2D760071458DF192
  670. 081AF1113314D13101B21300239"
  671.   UPGROB
  672. "D9D20ECE81D5040CCD204F0008FB97601471350617414334510008A6018F2D76
  673. 08D7AC8117414381AF0117414381AF008F3B51113681AF0813507818F2413414
  674. 2CAD816E14A1611361348BD46808770431F09EAF11567155716F17F81868F31F
  675. 09E65E15601550160170A6C5EE6DAF8084715601550170A6C55F160609F81AF1
  676. 08D1FF11B2130D903"
  677.   PLANES
  678. "47A2047A2047A20E4A20FE3000400038000390008A8F007490006A8000339010
  679. 81980008490004A80004490003A8000339000CA80008490002A800063901081A
  680. 80001390006A8000C490001A8000239000CB80001390003A8000C390008B8000
  681. 2390006A8010812901081A80004390004B80002390003A80108129000CB80004
  682. 390002B800032901081A80008390006B80004390001B8000329000CB80008390
  683. 003B8000629000848F00768000129000648000258000C2907081000081580002
  684. 29000648000468000129000148000258000C2900085800015800022900044800
  685. 0C58010812900024800025800043900014800015800022900084800085801081
  686. 2900044800045800043900024800035800033905010000858000839000848000
  687. 4580004390004480002580003390602000081480008490501000045800063900
  688. 0848000258000139000448000148000C4905020000C580002490501000025800
  689. 0139000C48000148000C49050200008580002490501000044801081390008480
  690. 0034800044905040000858000249050200004480108149050100002480004490
  691. 6080000814800034905040000448000859050200002480004590501000014800
  692. 034905080000C480008590504000024800065905020000148000159040100084
  693. 8000C5905080000448000259050400003480001590402000848000C69098F003
  694. 6903392020000000000090103392010000000000052503392030000000000003
  695. 20339203000000000000510B213047A2047A20C2A20F000054D6074797C2A203
  696. 100013336363F5C626C2A20310003393E243F596E6B213047A20C2A20B0000F4
  697. 96C6C2A20F00001353F5C626C2A2051000D21333E233F596E6B213047A20C2A2
  698. 012000645756C602155716E647964797F2C2A20D0000F57416C6C2A203100043
  699. 73E283F596E6B213047A20C2A20F00000596C6F647C2A20B0000F5C626C2A20F
  700. 00003373F596E6B213047A20C2A20320006427F6E647020516373756E6765627
  701. C2A20B0000F5C626C2A20F00003373F596E6B213047A20C2A201200025561627
  702. 020516373756E6765627C2A20B0000F5C626C2A20F00007333F596E6B213047A
  703. 20C2A20120002416767616765602162756160213C2A20B0000F5C626C2A20F00
  704. 009353F596E6B213047A20C2A20120002416767616765602162756160223C2A2
  705. 0B0000F5C626C2A2011000132333F596E6B2130B2130C2A209100034563737E6
  706. 1602137323B213047A20C2A2050000B213047A20C2A2050000B213047A20C2A2
  707. 050000B213047A20C2A2050000B213047A20C2A2050000B213047A20C2A20500
  708. 00B213047A20C2A2050000B213047A20C2A2050000B213047A2084E208014444
  709. 405C414E454C2A2091000144646F24456C6564756B2130B21308244"
  710.   FPLAN.GROB
  711. "E4A20EA7000400038000E0100400010040004780D74000010004011E4C9198A4
  712. 39D5000EC00047547D5D54011148409DA455840001200042D6154544011D4840
  713. 9AE45984000D400042557D5D540119484098A451549400098000425415454401
  714. 7E488198A43D84000E6000425475CDD50100400010040004780A040000100040
  715. F9F017010040001004000478091400001000401C040001004000478091400001
  716. 0004018040001004000478091400001000401804000100400047809140000100
  717. 04018040001004000478091400001000401C1400010040004780914000010004
  718. 010040001004000478091400001000401C140001004000478091400001000401
  719. 0140001004000478091400001000401C14000100400047809140000100040140
  720. 40001004000478091400001000401C1400010040004780914000010004010040
  721. 001004000478091400001000401C140001004000478091400001000401014000
  722. 1004000478091400001000401C14000100400047809140000100040101400010
  723. 04000478091400001000401C1400010040004780914000010004010040001004
  724. 0004780914000010004014140001004000478091400001000401414000100400
  725. 0478091400001000401C14000100400047809140000100040101400010040004
  726. 7809140000100040101400010040004780914000010004010040001004000478
  727. 091400001000401C140001004000478091400001000401404000100400047809
  728. 1400001000401C14000100400047809140000100040101400010040004780914
  729. 00001000401C1400010040004780914000010004010040001004000478091400
  730. 0010004018140001004000478091400001000401404000100400047809140000
  731. 1000401C14000100400047809140000100040141400010040004780914000010
  732. 00401C1400010040004780914000010004010040001004000478091400001000
  733. 401C140001004000478091400001000401014000100400047809140000100040
  734. 1804000100400047809140000100040140400010040004780914000010004014
  735. 0400010040004780914000010004010040001004000478091400001000401C14
  736. 00010040004780914000010004014140001004000478091400001000401C1400
  737. 010040004780914000010004014140001004000478091400001000401C140001
  738. 00400047809140000100040100400010040004780A040000100040F9F5070BAA
  739. 6580401000C78A9160000100040555577721610004885810000100040BAA6252
  740. 5111000C78A9160000100040555525271210004885810000100040BAA6252514
  741. 1000C78A91600001000405555272573100048859000001000405332"
  742.   HELP.1
  743. "E4A206950004000380001A0A11D5EAE481900542C40C42CA24EE680A11541A4A
  744. 8AA084454942A22A2A42680A15D5DE4CA9B08456D82E22A2E4E680A1B549A42
  745. 9AA08C694942A22A2A42680A11D5EA4CA9A30546D40CAECEEA4EBA0211D5EAE0
  746. 2960642429D1E80111541A405BA0AA2A654F80215D5DE407FA06E2EE5C1E8011
  747. B549A405DA0AA2AA54F80211D5EA4059606AEA29D5FC0C171EAE0E242108EE24
  748. 250C42CA24EE480C1111A40A2A61042A2A6942A22A2A42480C171DE40E2EE104
  749. EE2EE902E22A2E4E480C1119A4022AA104222AA942A22A2A42480C117EA402EA
  750. 210822EA250CAECEEA4E9A09119830AE46A4E00E6EA2D08DDDD780A1B5500A2A
  751. AA51001AAA651445441680A15D530EEEAA7D00D6AAE518CDD51680A115520A2A
  752. AA69409AAAA51054449680A1159B0AEA6A4E20EAEE2D0C4CDD48A0B175470790
  753. 6EAEE042D0C5D50C4D42580B12D6101B0AAA420A65144540455D2580B1255707
  754. F06AA4E0EE51C5D50C4DC3580B1254101D0AAA420AA514454045553580B12547
  755. 0790AEE4E0A2D04CDD1CC55A6C0B11596042EEE0415962075A12A2D81580A115
  756. BA0A2A240215BA421DA22A655680A155FA0E2AE40255FA407DB2AAE59680B1B5
  757. DA0A2A2402B5DA4215B26BA511580A115960AEE240415962015A12A2DCBA0402
  758. 1777C904051512C904071572C904051512C90405771ADD0C1379CEA042E04321
  759. 718B2D0CC52BEA480C151B24A0A2402551229865145CA84A480C157F4440E240
  760. 2571228BE514DD3944480C151D8440A24025512298A514543A44480C13796440
  761. AE40435721882D0CC5A9449A091217D5DC1CDC54073766537021778091512945
  762. 50445D6055111551051278091712945D1CD45507372253707127809151294550
  763. 445540151445510512780915729CDC144D54015733757057A9A0F02960EE2ABB
  764. 19BA93190E05BA0426BA8A29AA290F07FA04EAABB939A93190E05DA0422A88A2
  765. 9AA290F059604E2A8BA29BAB0B01909"
  766.   HELP.2
  767. "E4A20DF50004000380001A0C139D15D4270A9CE429D50C42CA24EE480C155805
  768. 5DA009A24A654842A22A2A42480C15988C5DB609A44EE5C902E22A2E4E480C15
  769. 194455B409A84AA54842A22A2A42480C13D844D4270A964A29D50CAECEEA4E8A
  770. 0D789CE429D184A18A39929389BB8EE2100008A24A65404DA28A8AA6508A0982
  771. 26100008A44EE5C1CDB28BBBAE538939AEEE100008A84AA54045B28A8AAA528A
  772. 0729D22A100008964A29D145A18ABA929389398EE215A0218B8E024E82E29383
  773. 96CF801198A02A482A6508AAA2F80119AA02E442AE538BB64F80119DA02A422A
  774. A5288AA8F802198E0EA42EE29388AA62FC0C15015960C2A309545A908948558C
  775. D1480B15015BA026B28444DA29445445494580C12755FA02AA38445DB214C544
  776. 5C9C1480B150B5DA022A084C65B29445445494580C15015960C2A009545A9085
  777. D9DD59C18A0618A3998A4302960C6ECC2A2DA80718A8AA8A5505BA02AA222A65
  778. 1980718BBBAAA7507FA026A44AAE51980718A8AADA6505DA02AA886BA5198071
  779. 8ABA98A4305960CAE662A2D4BC0D757170AAB8B0C5560737E64220942A330005
  780. 11509A8829845105551AA630BA6B80000771709BB8318C520735D6EA20FEAA31
  781. 000511109A8809845401559AA22820DA2A0200057710AABB8084530157EAA2A0
  782. 9A2AB16A0B1821C9CC5ABA3BC046E0E6ECD8446580B18614555C29A8820AA20A
  783. AA245D61580B18E1CDDCD39B3940E6E0E6AADC552580B18A14455439A0A80AA2
  784. 02AA255544580B1821445D529AB960AAE02AEC555438A0D73988B18920BB993B
  785. BB4352701D5A2000088A88828A288AAA88AA55DA00B5CA2000088B88B281188A
  786. 9939BA75DB605DDB2000088A888282188AAA0A8A655B4040154B2480C1BABBB1
  787. 8110BBAAB98B4352701D5A36A0D7BABCE00BB38B017032077301DDD46000088A
  788. A2208801888A002501550B58451000088BA2E009318B8B6025075305D9C41000
  789. 088AA2200A01888A40250155014058451480C1BABCE2893188B27072017501D9
  790. 4565A0608BABBA3A90608A29A21A90608A29B21A90608A29821A90608B39835C
  791. D05CEE"
  792.   HELP.3
  793. "E4A20032000400038000DE0019A4EAB40737E64223F80018AAA4AA505551AA6B
  794. 090118BAE4AA70735D6EA21F8011829A4AA601559AA222F8011829A4AB40157E
  795. AA2A1DF0106AF9010AAF901064F9010A4F901064FF0D08B9C042DCD8D52390D0
  796. 88A20A655454D2390D08B920EE5DD84D3390D088A20AA5541553390D08BAC0A2
  797. DC5DC52FF0FF0FF0E100003B9BB40671DDC9957906EAEA476580B1888A885015
  798. B5554445B0AAA4A511680A1989BB70155DDC9845F06AA4A772680A1A8A886015
  799. 15450155D0AAA4A614580B181BABB4067154DDC4790AEE4A4738F0106AF9010A
  800. AF901064F9010A4F901064FF0C00E6A403359ECE590B02AA20555B422590B0E6
  801. A10332F44E590B02AA20552D482590B0EAA40352946EFF0FF0B90616B"
  802.   STMENU
  803. "E4A202940004000380000183081000200E00201090E044001000200110229031
  804. 40E01E877001D3781EC3D803183111150200154201154E80214F11F502001542
  805. 01154D803144101140A001D3A01154D803183E83E87400E40483E44990004490
  806. F9F0074C0C144001040280F0060044044400010E480D74400004024111040044
  807. 04400001011000044E81EC3741193400820446C3E101C2F0045111154280F044
  808. 0001F5544411014511045F111542451974008204544B44110145110C6101E54A
  809. 42154400440C6444110155F0044E83054485F87E0044044E44E10E44168000E8
  810. 900015C0B0C76001800C36590B0404001800444590E040483FC1044483F290F0
  811. C34441900C340411190F04044419004048711190F04048719204044411190F04
  812. 0E04111040E871149010830E0E044400010E810012290E044000010111082229
  813. 0E0446C3E10111E807290E045444110F111D12290E0454441101111902290E0C
  814. 6444110111190A290E044E44E10193E8048F0E0C1000080000E8126803011067
  815. 80E0420000800001112680301104780E044EC3ED11101117680501934C3580E0
  816. 44154180110F11268050F54444580E044F54E801101112680501D7444580E042
  817. 144092E10111A680501504C3580E0C1E44F01010193468040193E4E8000E0900
  818. 04AC0A0C1400200114A8040E0048680A042000204114A804011008680D044687
  819. 702197F83780501546C1580D04440201F541547804015448680D04448328015
  820. 41547804055448680D042404A4015419778050944482580D0C1EC34001971147
  821. 8050697E011901083FF0DB04D19"
  822.   WBMENU
  823. "E4A20302000400038000D083081000200E015801048B80C04400100020011680
  824. 10A8B806140E01E87700191D97D932C1A805183111150200F1134030478C8041
  825. 4F11F5020011114018728B806144101140A00111140144282A806183E83E8740
  826. 0193187187201CA0F9F0074C01083880304C7E29010448804060411190F040E8
  827. 7ED3E0040201190E040150144010401C290E040F93E44E104802290E04410405
  828. 41104801290F083EC3F44E10E80F1FF0FF0FF0FF0FF0FF0FF0FF0FF0480C0830
  829. 140C108108490C04401405200108490E044E97844E01EC1E290F0C7154444111
  830. 19011190F044154244F11F90F1190E0441541421011821290E044E970C1E83E0
  831. 1EFF0DC071C0"
  832.   CURSOR
  833. "E1B20F900090000D3000FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFF
  834. FFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFF
  835. FFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF11664"
  836.   UNITMENU
  837. { { "lb" "_lb" } { "kg" "_kg" } { "in" "_in" } { "cm" "_cm" } { "Gal"
  838. "_Gal" } { "L" "_L" } }
  839.   PLMENU
  840. { "Cessna " "Mooney " "PA-" }
  841.   DESCMENU
  842. { "Empty" "Oil" "Fuel Quantity/" "Pilot" "Front " "Rear " "Passenger"
  843. "Baggage" }
  844.   Gal
  845. '6_lb'
  846.   L
  847. '1.584_lb'
  848.   CST
  849. { '1_Gal' '1_lb' "" "" '1_kg' '1_L' }
  850. END
  851.